ES 23.09.99
Pliki konfiguracyjne *.ini
Pliki konfiguracyjne ini zawieraj▒ sekcje, sekcje
zawieraj▒ pola, kt≤re maj▒ warto╢µ.
Sekcje
Lista
Nazwa sekcji:
Form<Nazwa>s, np. dla przegl▒darki klient≤w
(tabela/akcja Customer) bΩdzie FormCustomers
Pola:
SQL (wymagane) kwerenda, z kt≤rej bΩd▒ pobierane
dane
Title (wymagane) tytu│ okienka listy
Text (wymagane)
DataColumns (opcja) kolumny, kt≤re lista bΩdzie
wykorzystywa│a do szybkiego sortowania, lub filtrowania.
ListColumnN (opcja) kolumny, kt≤re bΩdzie pokazywa│a
lista. W przypadku, je┐eli nie jest podane, wykorzystuje siΩ
DataColumns
Default (opcja) filtr na│o┐ony na listΩ; zob.
dalej
Przyk│ad:
[StyleName]
Font = 10.Arial.Bold.CharSet=238
[StyleFullName]
Font = 7.Arial.Italic.CharSet=238
[FormSponsors]
ListColumn0 = Kontrahent;name,StyleName;long_name,StyleFullName
ListColumn1 = Address1;name;+;address2;
DataColumns="1;2;3;4;5"
SQL="SELECT * FROM sponsor"
Title="Refundatorzy"
Text = "Ref&undatorzy"
Default = "id=1;name=abc"
Formularz
Nazwa sekcji:
Form<Nazwa>, np. FormCustomer
Pola:
Title (wymagane) tytu│ okienka rekordu
User (opcja) nazwa pola zawieraj▒cego identyfikator
u┐ytkownika (user_id)
Status (opcja) nazwa pola zawieraj▒cego status
dokumentu (status)
Date (opcja) nazwa pola zawieraj▒cego bie┐▒c▒
datΩ (date)
ItemNumber (opcja) nazwa pola zawieraj▒cego numer
pozycji dokumentu
Number (opcja) nazwa pola zawieraj▒cego numer
dokumentu
DefaultFilter (opcja) domy╢lna kolumna
do szybkiego wyszukiwania
DefaultSort (opcja) domy╢lna kolumna do
sortowania
Przyk│ad:
[FormInvoice]
Title = "Faktura"
User = "user_id"
Status = "status"
Date = "makeout_date;delivery_date"
Number = "id"
DefaultFilter = "contrator_id"
DefaultSort = "3"
DataColumns
Pole zawiera identyfikatory kolumn oddzielone
╢rednikami.
W DataColumns powinny wystΩpowaµ wszystkie pola
wykorzystane w ListColumn.. Je┐eli nie ma sekcji ListColumn to lista zawiera
pola wymienione w DataColumns. Je┐eli nie ma DataColumns to lista zawiera
wszystkie pola tabel wymienione w SQL.
Identyfikator kolumny to liczba ca│kowita
dodatnia lub nazwa kolumny bez nazwy tabeli lub nazwa tabeli i nazwa kolumny
oddzielone kropk▒:
POLE_DATACOLUMN ::= DataColumn = "<KOLUMNA>{;<KOLUMNA>}"
KOLUMNA ::= <LICZBA_DODATNIA>
| <NAZWA_KOLUMNY>
| <NAZWA_TABELI>.<NAZWA_KOLUMNY>
UWAGA: Nazwa tabeli NIE MO»E byµ aliasem
u┐ytym
w kwerendzie.
Przyk│ad:
DataColumns = "1;2;customer_id;invoice.name;4;customer.name"
SQL
WA»NE: Kwerenda nie mo┐e ko±czyµ siΩ ╢rednikiem!
SELECT
W klauzuli SELECT mo┐na u┐ywaµ * i nazw kolumn.
Nazwy kolumn mo┐na kwalifikowaµ nazwami tabel,
tak┐e aliasami.
Nie mo┐na natomiast u┐ywaµ zapisu <tabela>.*
FROM
W klauzuli FROM mo┐na u┐ywaµ alias≤w oraz KEY/NATURAL
JOIN.
G│≤wna tabela musi wystΩpowaµ jako pierwsza.
WHERE
Mo┐na u┐ywaµ dowolnych warunk≤w.
W kwerendach dla detaili pytajnik u┐ywany
jako parametr do │▒czenia z masterem musi wystΩpowaµ na samym ko±cu.
Przyk│ad:
SQL="SELECT * FROM invoice_item I KEY LEFT OUTER
JOIN physical_drug D WHERE D.physical_drug_id>=0 AND I.invoice_id=?"
User, Date, Status
Pole User zawiera nazwΩ kolumny, kt≤ra opisuje
klucz obcy do tabeli "user_account". Operacja Nowy umieszcza w tej
kolumnie identyfikator bie┐▒cego u┐ytkownika.
Je┐eli kolumna opisuj▒ca u┐ytkownika nazywa
siΩ "user_id" to nie trzeba jej podawaµ w pliku ini.
Pole Date zawiera nazwy kolumn, oddzielone ╢rednikami,
kt≤re powinny zawieraµ bie┐▒c▒ datΩ.
Je┐eli kolumna opisuj▒ca datΩ nazywa siΩ
"date" to nie trzeba jej podawaµ w pliku ini.
Pole Status zawiera nazwΩ kolumny, kt≤ra opisuje
status dokumentu. Operacja Zatwierd╝ umieszcza w tej kolumnie "Z".
Je┐eli kolumna opisuj▒ca status nazywa
siΩ "status" to nie trzeba jej podawaµ w pliku ini.
Identyfikator kolumny to liczba ca│kowita dodatnia
lub nazwa kolumny bez nazwy tabeli lub nazwa tabeli i nazwa kolumny oddzielone
kropk▒:
Default
Pole Default zawiera formu│Ω do filtrowania rekord≤w.
Formu│a ta to niepusty ci▒g napis≤w postaci <kolumna>=<warto╢µ>,
oddzielonych ╢rednikami, np.
Default = "group_id=2;member_of=13"
WiΩkszy przyk│ad
Dla typowego master/detail potrzeba 4 sekcji.
Rozwa┐my to na przyk│adzie dokumentu faktury.
1. Najpierw tworzymy sekcjΩ dla listy faktur,
czyli:
//------------ lista dokument≤w
[FormInvoices]
SQL="SELECT * FROM invoice"
Text = "&Faktury"
Title = "Faktury"
// Ten default nie ma sensu, to tylko przyk│ad
Default = "invoice_id=1"
2. Potem tworzymy dwie sekcje dla master/detail:
//------------ formularz mastera
[FormInvoice]
Title = "Faktura"
Number = "id"
User = "user_id"
Status = "status"
Date = "makeout_date;delivery_date"
Number = "id"
DefaultFilter = "2"
DefaultSort = "3"
// albo...
DefaultFilter = "customer_id"
DefaultSort = "drug_id"
//------------ lista pozycji, detail
[FormInvoiceItems]
DataColumns="1;2;invoice_item.physical_drug_id;physical_drug.physical_drug_id"
SQL="SELECT * FROM invoice_item I KEY LEFT OUTER
JOIN physical_drug D WHERE D.physical_drug_id>=0 AND I.invoice_id=?"
Text="&Pozycje Faktury"
Title="Pozycje Faktury"
3. Na koniec tworzymy sekcjΩ dla pojedynczej pozycji
faktury:
//------------ formularz pozycji dokumentu
[FormInvoiceItem]
Title="Pozycja Faktury"
ItemNumber="item_number"
Do obejrzenia jest plik ea.ini.
Nazwa pliku
Ka┐da aplikacja powinna mieµ sw≤j plik ini,
Przyk│ad:
EuroApteka EA.ini.
Najlepiej aby plik by│ w katalogu, z kt≤rego uruchamiana
jest aplikacja.
Przyk│ad:
Dla ea jest katalog bie┐▒cy aplikacji.
NazwΩ pliku konfiguracyjnego okre╢la w kodzie
programu:
IAApplication::SetProfileFileName()
Przyk│ad:
static const WString ProfileFileName=".\\EA.ini";
// kropka oznacza bie┐▒cy katalog.
_application.SetProfileFileName( ProfileFileName
);
patrz r≤wnie┐ IAAction\Test\FormMain
ListColumnN
N = 0, 1, 2, ....
ListColumnN = NazwaKolumny ';' LisColumnDef
ListColumnDef = NazwaPolaBD ',' SekcjaStylu ';'
ListColumnDef
| NazwaPolaBD ',' SekcjaStylu
| NazwaPolaBD
(*) | ListColumnDef ';+;' ListColumnDef
Je┐eli w ListColumnN podane kilka p≤│ z bazy danych,
to ich warto╢ci s▒ wy╢wietlane jedno pod drugim, chyba ┐e jest '+' ( przypadek
* ) . Wtedy pole po plusie jest wy╢wietlane z prawej strony w tym samym
wierszu co pole przed plusem.
Sekcje Stylu
Style definiowane s▒ w pliku iaStyle.ini
Wszystkie pola w sekcjach stylu s▒ opcjonalne.
W przypadku, gdy nie jest podane pole, jest ustawiany styl domy╢lny.
Pola
Font = Definicja czcionki
Alignment = 'left' | 'right' | 'center'
Width = 'fixed' | liczba
Style = 'number' | 'label' | 'switch'
IAAction ver 01.28 ( 22-09-1999 )
Format = definicja formatu (tylko dla Style
= number)
Label = definicja teksu (tylko dla Style=
label)
W przypadku gdy pole Width ma warto╢µ 'fixed',
szeroko╢µ kolumny ustawia siΩ tylko raz. Zmiana filtra lub sortowania nie
modyfikuje szeroko╢ci kolumny.
Style = number
Pole Style o warto╢ci 'number' wy╢wietla tekst
kolumny tak jak liczbΩ ( na przyk│ad 123456789.09 bΩdzie wy╢wietlone w
postaci 123 456 789,09 ).
Pole Format
Pole Format jest uwzglΩdniane tylko dla Style
= 'Number'.
Domy╢ln▒ warto╢ci▒ pola jest "%.2f". Sk│adnia
jΩzyka C
Style = label
Style 'label' okre╢la sta│y napis.
Pole Label
Pole Label jest uwzglΩdniane tylko dla Style
= 'Label'.
Warto╢ci▒ tego pola jest sta│y tekst wy╢wietlany
dla ka┐dego wiersza.
Na przyk│ad )
Style = switch
Style 'switch' zamienia napis z zapytania na
inny napis.
Pola CaseN, ValueN, gdzie N - numer kolejnego
zamiennika numerowany od 0
Warto╢ci▒ pola CaseN jest napis, kt≤ry mo┐e powstaµ
w wyniku zapytania
Warto╢ci▒ pola ValueN jest napis, na kt≤ry trzeba
zamieniµ napis z CaseN.
|